Method and system for identifying and obtaining computer software from a remote computer

ABSTRACT

Creators of computer software provide the most up-to-date versions of their computer software on an update service. A user who has purchased computer software calls the update service on a periodic basis. The update service automatically inventories the user computer to determine what computer software may be out-of-date, and/or need maintenance updates. If so desired by the user, the update service computer automatically downloads and installs computer software to the user computer. By making periodic calls to the update service, the user always has the most up-to-date computer software immediately available. The update service may also alert the user to new products (i.e. including new help files, etc.), and new and enhanced versions of existing products which can be purchased electronically by a user from the update service.

FIELD OF INVENTION

The present invention relates to a system for automatically identifyingsoftware that may be appropriate for installation on a computer and formaking that software available to that computer. In particular theinvention relates to a remote system that inventories software installedon a computer, identifies additional software that may be appropriatefor the computer (e.g. patches, fixes, new versions of existingsoftware, new software, etc.), and makes the identified softwareavailable to that computer.

BACKGROUND AND SUMMARY OF THE INVENTION

The continual and rapid development of computers, computer software andrelated technology has revealed many problems with the typicaldistribution channels for computer software. For example, computersoftware, the coded instructions that control a computer's operation,are constantly and incrementally being upgraded and improved. Thecomputer hardware and operating system environment on which the computersoftware is used is continually being changed, which requires additionalchanges in the computer software (e.g. new device drivers, new operatingsystem calls, etc.).

A computer software developer will typically release an initial versionof a software product. Thereafter, as new and improved computers andperipherals are developed, the software product will commonly beupgraded so as to take full advantage of the increased capabilities ofthe hardware. In addition, a software developer, to remain competitive,will often upgrade the software product to provide new features andfunctionality.

With the ever increasing pace of advancement in computer relatedtechnologies, software developers compete to be the first to offer a newfeature or upgrade. As a result, sometimes software products are madeavailable to the public with unknown errors or defects. Similarly,software products that work as intended on a particular computer with aparticular configuration, may fail when installed on a differentcomputer having a different configuration (e.g. different hardware,peripherals, operating systems, etc.). Software developers frequentlyprovide fixes for their software products to correct defects that wereundetected or unanticipated at the time the software product wasreleased. Fixes are also provided to allow the software product tofunction correctly on a new computer or with a different operatingsystem environment.

However, it is often difficult for software developers to make upgradesand fixes available to users. This difficulty not only deprives the userof access to the most reliable and up-to-date software products, it canresult in lost sales to the software developer and can damage thegoodwill and the development of a long term relationship with a customerby releasing a flawed or deficient software product.

Commonly, mass distribution of commercial software products isaccomplished by copying the software product onto storage media (e.g.CD-ROMs, floppy disks, magnetic tapes, etc.). To take advantage ofeconomies of scale, typically a large number of copies of the softwareproduct are made during the manufacture of a particular softwareproduct. Then, the storage media containing the software product isprovided to distributors and retailers for sale to users. However, giventhe rapid pace of software development, this manner of distribution isfrequently insufficient. For example, it is not uncommon that defectsare detected and fixes created shortly after a software product isintroduced to the public. However, the software products that remain inthe distribution chain contain the defect without the fix. Thissituation is frustrating for users who subsequently purchase thesoftware product that is already obsolete (i.e. because of the defects).

Software can also be distributed over electronic bulletin board systems,the Internet, etc. In such systems, a user connects to the bulletinboard and then selects and downloads desired software. Such systemsallow for rapid updating of software by simply supplying a new updatedversion of the software to the bulletin board. However, such systemsalso require a degree of user sophistication and technical expertise inthe selection, downloading and installation of the new software.Moreover, such systems do not provide a user that has already obtained asoftware product with a simple, automatic way of learning of orobtaining upgrades or fixes for that product. The software provider mayalso have updated help files and other help utilities about which a userwould have no way of knowing.

In accordance with an illustrated embodiment of the present invention,many of the problems associated with obtaining computer software areovercome. A user, with a user computer is allowed to access (e.g. with amodem, an Internet connection, etc.) an update service at a remotelocation on which is stored a variety of computer software. When a useraccesses the remote update service, an update service computer conductsan automatic inventory of the computer software on the user computer.The data collected from the inventory of the user computer software isthen used to make comparisons to database entries from a database on theupdate service computer. The database entries contain information aboutcomputer software available on the update service computer. Thecomparison is conducted to identify software available from the remoteupdate service that might be appropriate for installation on the usercomputer (i.e. new computer software, new versions of existing computersoftware, patches or fixes for existing computer software, new helpfiles, etc.). After the comparison is completed, the update servicecomputer makes the computer software stored at the remote update servicecomputer available to the user.

In one aspect of the invention, available computer software can bedownloaded from the remote update service computer and installedimmediately on the user computer. Another aspect of the invention allowsthe update service computer to contact the user computer at a later,more convenient time, re-establish two-way communications, then downloadand install available computer software on the user computer. If adelayed download is requested, the user will provide access information(e.g. phone number, network address, a file of commands to execute tologon the user computer, etc.) to the update service computer whichallows the remote update service computer to re-connect to the usercomputer. The transfer may use an encryption scheme to permit safetransfer of the software to the user computer.

In yet another aspect of the invention, the system will allow a user topurchase the available computer software electronically. The user, forexample, provides credit card information, debit card information, anaccount number to bill, etc. to the update service computer. Securetransaction technology and/or digital signatures are used to safeguardthe payment information. After verifying the payment information, theupdate service computer permits transfer of the computer software.

The update service has several advantages. A user is automaticallyprovided with information about the available versions of computersoftware as result of the inventory conducted by the update centercomputer. If the version of the computer software on the user computerhas defects that are known and have been corrected, the user is alertedto this fact and is offered an up-to-date version of the computersoftware. The user is also alerted to the availability of new computersoftware, or enhanced versions of existing computer software, and canpurchase them electronically. In either case, the most up-to-dateversions of computer software are available for downloading to users.

The available versions of the computer software can also beautomatically installed on the user computer. Since it is no longernecessary for the user to install the computer software, the incidenceof user related installation problems is greatly reduced. It is also notnecessary for the user to obtain or save any storage media since thecomputer software is downloaded directly to the user computer. If thecomputer software installed on the user computer ever gets corrupted,the user can call the update service (e.g. for some limited number ofiterations) and download a new (and up-to-date) copy of the computersoftware.

In addition to providing benefits for the user, the illustratedembodiment of the invention provides benefits to the developers of thesoftware. The developers of the computer software save support,distribution, and advertising costs. A user who calls the update serviceautomatically obtains up-to-date versions of available computersoftware, and may never encounter defects which would have beenencountered using an earlier, defective version of the computersoftware. As a result, a user will require less support from thedevelopers of the software will be more satisfied, and be more willingto purchase future versions of computer software. Since the computersoftware is downloaded to the user computer, the developers of thecomputer software may save distribution costs as fewer versions of thecomputer software have to be copied to storage media and distributed. Inaddition, since the user is also alerted when new computer software,and/or new versions of existing computer software are available, thesoftware developers may also save advertising costs.

The foregoing and other features and advantages of the illustratedembodiment of the present invention will be more readily apparent fromthe following detailed description, which proceeds with reference to theaccompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of a computer system used to implement anillustrated embodiment of the present invention.

FIG. 2 is a block diagram showing the update service center and theremote user computers.

FIG. 3 is a block diagram showing the access processes on the user andupdate service computers.

FIGS. 4A-4B are a flow chart showing an illustrative sequence which isfollowed when a user calls the update service.

FIG. 5 is a flow chart showing an illustrative sequence which isfollowed when the update service re-connects to a user computer.

DETAILED DESCRIPTION OF AN ILLUSTRATED EMBODIMENT

Referring to FIG. 1, an operating environment for the illustratedembodiment of the present invention is a computer system 10 with acomputer 12 that comprises at least one high speed processing unit (CPU)14, in conjunction with a memory system 16, an input device 18, and anoutput device 20. These elements are interconnected by a bus structure22.

The illustrated CPU 14 is of familiar design and includes an ALU 24 forperforming computations, a collection of registers 26 for temporarystorage of data and instructions, and a control unit 28 for controllingoperation of the system 10. Any of a variety of processors, includingthose from Digital Equipment, Sun, MIPS, IBM, Motorola, NEC, Intel,Cyrix, AMD, Nexgen and others are equally preferred for CPU 14. Althoughshown with one CPU 14, computer system 10 may alternatively includemultiple processing units.

The memory system 16 includes main memory 30 and secondary storage 32.Illustrated main memory 30 is high speed random access memory (RAM) andread only memory (ROM). Main memory 30 can include any additional oralternative high speed memory device or memory circuitry. Secondarystorage 32 takes the form of long term storage, such as ROM, optical ormagnetic disks, organic memory or any other volatile or non-volatilemass storage system. Those skilled in the art will recognize that memory16 can comprise a variety and/or combination of alternative components.

The input and output devices 18, 20 are also familiar. The input device18 can comprise a keyboard, mouse, pointing device, sound device (e.g. amicrophone, etc.), or any other device providing input to the computersystem 10. The output device 20 can comprise a display, a printer, asound device (e.g. a speaker, etc.), or other device providing output tothe computer system 10. The input/output devices 18, 20 can also includenetwork connections, modems, or other devices used for communicationswith other computer systems or devices.

As is familiar to those skilled in the art, the computer system 10further includes an operating system and at least one applicationprogram. The operating system is a set of software which controls thecomputer system's operation and the allocation of resources. Theapplication program is a set of software that performs a task desired bythe user, making use of computer resources made available through theoperating system. Both are resident in the illustrated memory system 16.

In accordance with the practices of persons skilled in the art ofcomputer programming, the present invention is described below withreference to symbolic representations of operations that are performedby computer system 10, unless indicated otherwise. Such operations aresometimes referred to as being computer-executed. It will be appreciatedthat the operations which are symbolically represented include themanipulation by CPU 14 of electrical signals representing data bits andthe maintenance of data bits at memory locations in memory system 16, aswell as other processing of signals. The memory locations where databits are maintained are physical locations that have particularelectrical, magnetic, optical, or organic properties corresponding tothe data bits.

As is shown in FIG. 2, the illustrated embodiment of the inventionconsists of one or more user computers 34 which are connected overcommunications links 36 to an update service center 38. The updateservice center consists of one or more second remote computer(s) 40, oneor more communications links 36, and one or more databases 42.

The update service center 38 consists of one or more computers 40 (e.g.the computer that was described in FIG. 1) which are capable ofsimultaneous access by a plurality of user computers. If a plurality ofupdate service computers are used, then the update service computers maybe connected by a local area network (LAN) 44 or any other similarconnection technology. However, it is also possible for an updateservice center to have other configurations. For example, a smallernumber of larger computers (i.e. a few mainframe, mini, etc. computers)with a number of internal programs or processes running on the largercomputers capable of establishing communications links to the usercomputers. The update service center may also be connected to a remotenetwork (e.g. the Internet) or a remote site (e.g. a satellite) (whichis not shown in FIG. 2). The remote network or remote site allows theupdate service center to provide a wider variety of computer softwarethan could be stored at the update service center. One or more databases42 connected to the update center computer(s) 40 are used to storedatabase entries consisting of computer software available on the updateservice computer(s). The update service computer(s) also contain aplurality of communications links 36 such as telecommunicationsconnections (e.g. modem connections, ISDN connections, ATM connection,frame relay connections, etc.), network connections (e.g. Internet,etc.), satellite connections (e.g. Digital Satellite Services, etc.),wireless connections, two way paging connections, etc., to allow one ormore user computers to simultaneously connect to the update servicecomputer(s). The connections are managed by an update server 46.

After a user computer establishes two-way communications with the updateservice computer, an inventory of computer software on the user computeris completed without interaction from the user, sent to the updateservice computer, and compared to database entries on the update servicecomputer. The database entries from the database connected to the updateservice computer contain information about computer software which isavailable to a user. After the comparison, the user computer is sentback a summary of available computer software which is displayed for theuser. The summary contains information such as the availability ofpatches and fixes for existing computer software, new versions ofexisting computer software, and brand new computer software, new helpfiles, etc. The user is then able to make one or more choices from thesummary of available computer software, and have the computer softwaretransferred from the update service computer to the user computer. Theuser may choose to update on the fly, or store update information forfuture update needs.

As is shown in FIG. 3, running on the update service computer(s) 40 isone or more service update applications (SUA) 48 that will communicatewith a user update application (UUA) 50 on the user computer when theupdate service is contacted by the a user with a user computer. The userupdate application 50 is a computer software program that is capable ofinitiating, establishing and terminating two-way communications with anupdate service application on the update service computer. The serviceupdate application 48 is a computer software program which is alsocapable of initiating, establishing and terminating two-waycommunications with a user update application on a user computer.

To access the update service center 38, a user starts a user updateapplication (UUA) 50 on the user computer 34 to begin the accessprocess. The user update application 50 tries to establish a two-waycommunications link 36 with an update service computer 40 using a modem,a network connection (e.g. Internet), etc. However, this access can alsobe completed by a variety of other methods which provide two-way datatransfer. As the user update application 48 on the user computer 34tries to establish a two-way communications link 36 to the updateservice computer 40, the update service computer starts a service updateapplication (SUA) 48. The service update application on the updateservice computer then tries to establish a two-way communications linkto the user update application on the user computer. This is shown bythe dashed lines 52 in FIG. 3. This communications link can beestablished with a network protocol stack, (e.g. TCP/IP) throughsockets, or any other two-way communications technique known in the art.

After establishing a two-way communications link, the service updateapplication conducts an automatic inventory (i.e. without input from theuser) of the computer software on the user computer. The data collectedduring the inventory is sent from the user computer to the remote updateservice computer. The service update application on the update servicecomputer compares the inventory data collected from the user computer todata stored in a database on the update service computer. The databasecontains information on available computer software available from theupdate service. The update service computer then creates a summary andsends the summary to the user computer. The summary 54 is then presentedto the user by the user computer. The summary contains information aboutcomputer software available on the update service computer such as theavailability of patches and fixes for existing computer software, newversions of existing computer software, and brand new computer software,etc. In addition, the availability of agent help files, wizards,inference engine, and other operating system components will be listedin the summary.

The illustrated embodiment of the invention is implemented in theMicrosoft Windows 95 operating system by the Microsoft Corporation ofRedmond, Wash. using a modem, or an Internet network connection, foraccess to the update service computer. The invention can likewise bepracticed with other operating systems and other access technologiesthat allow two-way data transfer.

As is shown in the flowchart in FIG. 4A, a user begins the accesssequence (56) to an update service by launching a user updateapplication included in the Windows® 95 operating system. However, theuser update application can also be any application that is capable oftwo-way communications, and run under other operating systems. The userupdate application allows the user computer to establish a two-waycommunications path for access to the update service computer.

When the user update application starts (58), the user is shown optionalhelp information which instructs the user on how to establish aconnection between the user computer and the update service computer.The actual connection configuration is completed by allowing a user tochoose the appropriate connection method (60). For example, the user maychoose to establish the connection with a modem. If a modem is chosen,the phone number to dial, modem (e.g. speed, line type, etc.) andcommunications parameters (e.g. parity, stop bits, etc.) are thenconfigured. If the user chooses to make a network connection (e.g.Internet, etc.) to access the update service, the network address of theupdate service and other network parameters are configured. A similarsequence would be completed for other connection technologies.

When the user update application attempts to make the desired connection(60), the update service computer launches a service update application(64). A two-way communications path (66) is set up between the serviceupdate application on the update service computer and the user updateapplication on the user computer. The service update application on theupdate service computer then requests that the user update applicationon the user computer conduct an automatic inventory of all computersoftware installed (68) on the user computer.

In the illustrated system, this inventory is done automatically (i.e.without input from the user), and is completed by assigning theinventory task to a Windows 95 operating system process thread on theuser computer. The operating system thread completes the task in the"background" while the user is performing other activities in the"foreground" (e.g. choosing options from the user update application).In reality, there are no real background and foreground processes, justa number of operation system process and process threads which are runfor some specified time interval by the operating system. Threads arewell known in the art and are used in other operating systems such asWindows NT by Microsoft, and OS/2 by IBM. However, other operatingsystem techniques could also be used to accomplish the inventory on theuser computer.

During the inventory, data is collected about all computer softwareinstalled on the user computer. Data such as the software title, date,version, file size, file checksum, directory location on the usercomputer, etc. are collected. After the inventory is complete, the userupdate application sends (70) the inventory data from the user computerto the service update application on the update service computer. Theservice update application compares the user inventory data from theuser computer to database entries in the computer software database toautomatically analyze the computer software stored on the user computer(72). The database connected to the update service computer has entrieswhich contain information about available computer software. Thedatabase entries also identify and describe, for example, components ofthe computer software, including new computer software, patches, fixes,new help files, wizards, inference engines, other operating systemcomponents, updates as well as enhancements and new features of existingcomputer software. The database entries describing new computer softwaremay also include entries describing brand new computer software (i.e.computer software that is newly created, and not previously existing).

Any computer software installed on the user computer which is listed inthe database on the update service computer (e.g. out-of-date and/orrequire a maintenance update, etc.) is flagged as available (74). Theuser computer may also contain computer software that is not known bythe update service. If the user computer contains computer softwarewhich is unknown to the update service computer, this computer softwareis marked as unknown by the update service computer. After the serviceupdate application completes the analysis of user computer software, asummary report is sent back to the user computer from the update servicecomputer (76).

In the illustrated system, the user can choose from several updateservice options. One option may be to check for maintenance updates forall computer software installed on the user computer that is known bythe update service. A second option may be to check only specificcomputer software, or a specific group of computer software stored onthe user computer for maintenance updates. For example, if the userwanted to check and see if there were any maintenance updates for aparticular word processing program, option two would be selected. Athird option may be to check whether there are any new or enhancedversions of computer software available from the update service. Afourth option may be to check only for new versions of specific computersoftware or groupings of computer software installed on the usercomputer. A fifth option may be to check the update service computer forinformation on new computer software (i.e. brand new products, not newor enhanced versions of existing products). A sixth option may be tocheck only if there are new help files, or other new support dataavailable. This list of options is not intended to be all inclusive, asother options can be added to provide additional update servicefunctionality. Based on user input, the user update application createsan output report (78) (FIG. 4B) based on the option(s) chosen by theuser and the summary report created by the service update application.The service update application can also create the output reportdirectly, using default choices with no input at all from a user.

If the output report is not empty (80), a second optional report iscreated and displayed for the user providing a short description thatsummarizes the computer software available from the update service (82).This second optional report is used by the user to determine whatcomputer software on the user computer will be updated, if any. If theoutput report is empty, the computer software on the user computer iscurrent and up-to-date (84), so no further action by either the updateservice computer or the user computer is required.

If the output report is not empty, then the user is asked to choosewhich available computer software shown in the output report, if any,will be downloaded and installed on the user computer (86). No softwareis downloaded without the user's permission. If one or more computersoftware components (i.e. pieces or parts of the available computersoftware) are chosen by the user, the user update application isinstructed to make backup copies of all of the computer softwarecomponents on the user computer that will be affected, and create a logfor the user documenting which computer software will be replaced (88).The backup copies and the log can be used by the user to restore theoriginal version of the computer software components on the usercomputer if a need arises to do so.

The user has the option of choosing none, one, or a number of computersoftware components to download and install. If the list of availablecomputer software to be downloaded and installed is large, the user alsohas the option of delaying the update to a later time (90). If the userchooses an immediate download, the user is asked if the service updatecenter should also install the computer software chosen by the user (92)after downloading.

If immediate installation is chosen, the service update application onthe update service computer downloads the available software to the usercomputer and installs the software in the proper place (e.g. in theproper directory or subdirectory) on the user computer (94). A log isalso created that records what computer software was downloaded to theuser computer. If immediate installation is not chosen by the user, theuser can save any update information, and continue with other tasksbefore deciding when to download any software chosen by the user.

If the user chooses a delayed update, the user provides re-connectinformation (98) that allows the update service computer to re-connectto the user computer at a more convenient time (e.g. midnight, etc.) andcomplete the downloading and installation at that time.

As part of the re-connect information, the user may create a logonscript using an automated macro language to provide the logon sequenceto be used, and the directory to be used to download the software chosenby the user. The logon script and the time the user wishes to have thechosen software downloaded are then sent to the update service computer,and stored in an update service computer database. At the appropriatetime chosen by the user, the update service will execute the logonscript to re-connect to the user computer, and download the chosensoftware in the proper directory. An encryption scheme may also be usedto permit safe transfer of the software to the user computer.

The user also has the option of choosing a logon method different thenthe one they are currently connected to the update service center with.For example, if a user is connected to the update service center with amodem, the user may choose to have the chosen software downloaded at alater time using a network connection (e.g. Internet, etc.) However, theuser's computer must be capable of accepting software with a differentconnection method.

To allow a re-connection using a modem, the user would enter the phonenumber of the phone line attached to the user computer and send thisinformation to the update service computer. The user would leave theuser computer and modem on, and set the communications software in ananswer mode to answer any incoming calls. For a network re-connection,the user would provide the update service computer the user networkaddress and set the network software in a host mode to process anynetwork connection attempts.

The delayed downloading is illustrated in the flow chart in FIG. 5. Tocomplete the delayed downloading, the update service computer launches aservice update application that tries to re-connect (100) to the usercomputer. The update service application will use the informationprovided at an earlier time by a user (e.g. modem logon information,network logon information, a logon script, etc.). If the connection issuccessful, a service update application on the update service computerasks the user computer to launch a user update application tore-establish a two-way communications path (102). The re-connect to theuser computer may be completed using a different access method than wasused during the original user computer-update service computerconnection. For example, the update service computer may request adigital satellite system re-connect to the user computer instead of theupdate service computer. A different access method is typically chosento provide the most efficient and greatest bandwidth data transferbetween the update service computer and the user computer.

After establishing a new two-way communications path, the user updateapplication creates a new directory (104) on the user computer, wherethe computer software is transferred and stored (106). A log is alsocreated to document what available computer software was transferred tothe user computer. Included with the downloaded computer software is aninstallation application that will be used later by the user to installthe computer software. When the transfers are complete, the updateservice computer terminates the connection to the user computer (108).An encryption scheme may also be used to permit safe automated transferof the software to the user computer.

When the user is ready to install the computer software (e.g. the nextmorning if the computer software was transferred and installed in themiddle of the night), the user simply launches the installationapplication supplied by update service computer.

Leaving the user an installation application to execute is an addedsafety and security measure for both the user and the update service.The user computer is not updated unless the user personally starts theinstallation process. However, the user can also choose to have thecomputer software automatically installed by the update service when itre-connects to the user computer (but, user permission is alwaysobtained and recorded first). In this case, the installation applicationis not downloaded to the user computer. However a log is created so auser can determine what available computer software was downloaded andinstalled.

As was described above, the third, fourth, and fifth options allow auser to check for new versions of existing computer software, or newcomputer software available from the update service. If a new version ofexisting computer software, or new computer software is available, theuser is asked if they wish to purchase the computer software. If so, theappropriate fee is requested from the user. The user can pay the feeelectronically by transmitting credit card information, debit cardinformation, billing account information, etc. to the update servicecomputer from the user computer. Digital signatures, secure transactiontechnology, or an encryption scheme may also be used to collect paymentinformation from the user. Once the fee information is collected by theupdate service computer and is verified, the user can choose betweenimmediate or delayed downloading of the new, or new version of thecomputer software following steps (88-98) (FIG. 4B) described above.

Since new versions of computer software are typically very large, theuser will be informed that a delayed installation is probably mostefficient for the user. If a delayed installation of a new product ischosen, the update service computer will then re-connect to the usercomputer at a later time and download the new version of the computersoftware as was shown in FIG. 5. In the illustrated embodiment, theupdate service uses a digital satellite service link, or some otherhigher bandwidth connection to transfer the computer software to theuser computer whenever possible.

If the user chooses not to pay for a new version of computer softwarewhen the update service is called, additional data from which the usercan obtain more information on the new computer software is displayed.For example, the information may contain a summary of the features ofthe new computer software and the information may also contain a list ofretail outlets close to the user where the user may then purchase a newversion of computer software on storage media if desired. Some users mayprefer to obtain the computer software on storage media and call theupdate service to obtain up-to-date versions of the computer software.

With automatic downloading and installation of computer software fromthe update service, the user is relieved from the burden of obtainingcomputer software (e.g. on storage media, by downloading from a bulletinboard or on-line service, etc.), and installing the computer software onthe user computer. Once a user purchases computer software, periodiccalls to the update service will keep the user current and up-to-date.

It should be understood that the programs, processes, or methodsdescribed herein are not related or limited to any particular type ofcomputer apparatus, unless indicated otherwise. Various types of generalpurpose or specialized computer apparatus may be used with or performoperations in accordance with the teachings described herein.

Having illustrated and described the principles of the present inventionin an illustrated embodiment, it should be apparent to those skilled inthe art that the embodiment can be modified in arrangement and detailwithout departing from such principles. For example, elements of theillustrated embodiment shown in software may be implemented in hardwareand vice versa. Similarly, hardware and software components can beinterchanged with other components providing the same functionality.

In view of the wide variety of embodiments to which the principles ofthis invention can be applied, it should be understood that theillustrated embodiments are exemplary only, and should not be taken aslimiting the scope of my invention. Rather, I claim as my invention allsuch embodiments as come within the scope and spirit of the followingclaims and equivalents thereto.

I claim:
 1. In a computer system having a first computer incommunication with a remote second computer, the second computer havingaccess to a database identifying software remotely available to thefirst computer, wherein at least one item in the database identifiessoftware installable on the first computer, a computer implementedmethod for identifying computer software available for installation onthe first computer, the method comprising, at the secondcomputer:retrieving from the first computer to the second computer aninventory identifying at least certain computer software installed onthe first computer; comparing the inventory of computer software withthe database to identify computer software available to the firstcomputer and not installed on the first computer; preparing forpresentation at the first computer software information indicatingsoftware available to the first computer and not installed on the firstcomputer; and sending the software information to the first computer,said information including an alert about a defect in software on thefirst computer correctable by software available to the first computerand not installed thereon.
 2. A computer readable medium having computerexecutable instructions for performing the method recited in claim
 1. 3.The method of claim 1 wherein the software information comprisespurchase information associated with software available to the firstcomputer and not installed on the first computer.
 4. The method of claim1 wherein the software information comprises a description summarizingfeatures of new software available to the first computer and notinstalled on the first computer.
 5. The method of claim 1 wherein thesoftware information comprises a software title, a software date, asoftware version, a software file size, a software location, and adescription of software functionality.
 6. The method of claim 1 whereinthe second computer is in communication with a third remote computer,the third computer having a second database containing database entrieslisting a plurality of computer software available to the firstcomputer, the method further comprising:consulting the third remotecomputer to compare the inventory with the second database, therebyidentifying computer software available to the first computer and notinstalled on the first computer.
 7. The method of claim 1 furthercomprising:receiving at the second computer a user software selectionindicative of desired software; and transferring from the secondcomputer to the first computer software indicated by the user softwareselection.
 8. The method of claim 7 further comprising:collectingpayment information from the first computer to pay for the softwareindicated by the user software selection.
 9. The method of claim 7wherein the software indicated by the user software selection istransferred to the first computer in an encrypted format over a publicnetwork.
 10. In a computer system having a first computer incommunication with a remote second computer, the second computer havingaccess to a database identifying software available to the firstcomputer, wherein at least one item in the database identifies softwareinstallable on the first computer, a computer implemented method foridentifying computer software available for installation on the firstcomputer, the method comprising, at the first computer:conducting aninventory of the first computer, the inventory identifying at leastcertain computer software installed on the first computer; sending fromthe first computer to the second computer the inventory for comparisonto the database; receiving from the second computer a software summaryindicating software available to the second computer and not installedon the first computer, said software summary including an alert about adefect in software on the first computer correctable by softwareavailable to the first computer but not installed thereon; andpresenting the software summary on the first computer.
 11. A computerreadable medium having computer executable instructions for performingthe method recited in claim
 10. 12. The method of claim 10 wherein thedatabase identifies at least one new software product.
 13. The method ofclaim 10 further comprising:receiving at the first computer a selectedcategory for restricting presented summary information; and restrictingthe software summary to software in the selected category.
 14. Themethod of claim 10 further comprising:receiving at the first computer auser selection from the software summary, the user selection indicatingdesired software; backing up software components on the first computeraffected by the desired software; downloading the desired software tothe first computer; and installing the desired software on the firstcomputer.
 15. The method of claim 14 wherein the desired software isdownloaded to the first computer with a digital signature over a publicnetwork.
 16. The method of claim 10 further comprising:receiving at thefirst computer a user selection from the software summary, the userselection indicating desired software; and downloading the desiredsoftware to the first computer.
 17. In a computer system having a usercomputer in communication with a remote update service computer havingaccess to a database identifying software available to the updateservice computer, wherein at least one item in the database identifiessoftware installable on the user computer, a computer implemented methodfor transferring computer software to the user computer, the methodcomprising:establishing a first communications session between the usercomputer and the update service computer; collecting an inventory duringthe first session from the user computer to identify at least certaincomputer software installed on the user computer; comparing theinventory of computer software on the user computer with the database toidentify software available to the update service computer and notinstalled on the user computer; presenting at the user computer softwareinformation indicating software available to the update service computerand not installed on the user computer, said information including analert about a defect in software on the user computer correctable bysoftware available to the user computer and not installed thereon;receiving a selection of software from the software information duringthe first session; saving a list indicating the software selected;during the first session, retrieving reconnection information to theupdate service computer from the user computer for establishing a secondcommunications session with the user computer; terminating the firstcommunications session; establishing a second communications sessionbetween the user computer and the update service computer using thereconnection information; and transferring during the secondcommunications session software indicated by the saved list from theupdate service computer to the user computer.
 18. The method of claim 17wherein the second communications session is scheduled by a user toautomatically take place at a time more convenient for transferringsoftware than the first.
 19. The method of claim 17 wherein thereconnection information comprises computer software billing informationcollected from the user computer using secure transaction technology.20. The method of claim 17 wherein the reconnection informationcomprises a list of commands executable to establish the secondcommunications session.
 21. The method of claim 17 wherein the secondcommunications session is completed using an access method differentfrom the first.
 22. In a computer, a software delivery system forproviding software to a remote computer, the delivery systemcomprising:a database containing entries indicative of softwareavailable to the remote computer; an inventory collector operable forreceiving from the remote computer an inventory of software indicatingat least certain software installed at the remote computer; a compareroperable for identifying software in the database and not in theinventory; and a report generator operable for generating a summary ofthe software in the database and not in the inventory for presentationto a user at the remote computer, the summary including an alert about adefect in software on the remote computer correctable by softwareavailable to the remote computer and not installed thereon, the reportgenerator further operable for sending the summary to the remotecomputer.
 23. The delivery system of claim 22 further comprising:aselection receiver operable for receiving a user selection from thesummary; a software collection comprising software indicated by thedatabase and installable at the first computer; and a transferoroperable for transferring computer software in the collection indicatedby the user selection to the remote computer.
 24. A method of updatingsoftware earlier installed on a first computer from a library ofsoftware stored on a second computer, comprising:identifying softwareearlier installed on the first computer; identifying to a user of thefirst computer a software update that is available on the secondcomputer corresponding to software identified as earlier installed onthe first computer, and alerting the user to a defect in the earlierinstalled software that would be correctable by installation of saidsoftware update; and in response to user authorization, sending saidsoftware update from the second computer to the first computer.